-- Author: Compumaster

with interfaces.c; use interfaces.c;

package data_library is
    
    N : constant Standard.Duration := 5.0;  --Temps entre chaque envoi de la position a l'OP
    
    subtype indice_tab is positive range 1..100;
    
    -- type pointeur de chaine de caracteres
    type String_ptr is Access All char_array;
           
    --type definissant une position   
    type Position is RECORD        
        id_bus_stop : integer;
        distance    : Float;    --Distance parcourue  depuis le dernier arret
        time        : Float;    --Temps ecoule depuis depuis le dernier arret
        sens_aller  : Boolean;  --Vrai si le bus est dans le sens alle
    end record;
            
    -- type pointeur sur position
    type ptr_position is access Position; 
        
    --type definissant un T_bus_stop (un arret de bus)
    type T_bus_Stop is RECORD 
         idBusStop : integer;
         obligatory: boolean;
         distance  : Float; -- distance from the next bus_stop
    end record;
    
    --type definissant une bus_line
    type Bs_Tableau is array (indice_tab range <>) of T_bus_Stop; 
    type bus_Line( taille : indice_tab :=1) is RECORD
            idLine : integer;
            Sommet : integer := 0;
            TabBS : Bs_Tableau(1..taille);
    end record;
    
    --type definissant un T_Schedule (une horaire de passage)
    type T_Schedule is RECORD
            waiting_time : float;
            line_number : integer;
            info : integer;
    end record;
        
    -- type pointeur sur T_Schedule
    type ptr_T_Schedule is access T_Schedule; 

    
    type T_Schedules_Tableau is array (indice_tab range <>) of T_Schedule;
    type T_Schedules(taille : indice_tab :=1) is RECORD
                Sommet : integer := 0;
                Tab : T_Schedules_Tableau(1..taille);
    end record;
                   
    --type definissant une liste de bus_line   
    type Bl_Tableau is array( indice_tab range <>) of bus_Line;
    type bus_line_list(taille:indice_tab:=1) is RECORD
            Sommet : integer := 0;
            TabBL : Bl_Tableau(1..taille);
    end record;
        
end data_library;
